คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 2
"ปีต้นคริสตศตวรรษไม่เป็น leap ยกเว้น ปีต้นศตวรรษที่หาร 400 ลงตัว" (เช่นปี 2000)
def isLeapYear(year):
if year % 4 != 0:
leap = False # หารสี่ไม่ลงตัว (28)
elif year % 100 != 0:
leap = True # หารสี่ลง ไม่ใช่ต้นศตวรรษ (29)
elif year % 400 != 0:
leap = False # หารสี่ลง ต้นศตวรรษ แต่หาร 400 ไม่ลง (28)
else:
leap = True # หารสี่ลง ต้นศตวรรษ หาร 400 ลง (29)
return leap
def isLeapYear(year):
if year % 4 != 0:
leap = False # หารสี่ไม่ลงตัว (28)
elif year % 100 != 0:
leap = True # หารสี่ลง ไม่ใช่ต้นศตวรรษ (29)
elif year % 400 != 0:
leap = False # หารสี่ลง ต้นศตวรรษ แต่หาร 400 ไม่ลง (28)
else:
leap = True # หารสี่ลง ต้นศตวรรษ หาร 400 ลง (29)
return leap
แสดงความคิดเห็น
ขอถามเรื่อง if,elif ของ Python หน่อยครับว่าผมเข้าใจถูกไหม
สมมติว่าค่า year = 2000
จากในรูปฟังกชั่น isLeapYear(year)
ถ้าให้แกะโค้ดเป็นภาษาคน คือสเต็ปการทำงานเป็นตามในรูปที่ผมเข้าใจถูกต้องไหมครับ
คือ บรรทัด If แรก [ถ้า 2000 % 4 ไม่เท่ากับ 0 (ความหมายคือหารไม่ลงตัว)
year = False แต่ในที่นี่ 2000 มันดันหารลงตัว ดังนั้นให้ไปทำงานใน
บรรทัด elif สองต่อ ถ้า 20000 ไม่เท่ากับ 0 (ความหมายคือหารไม่ลงตัว)
year = True แต่ในที่นี่ 2000 มันดันหารลงตัว ดังนั้นเงื่อนไขไม่เป็นจริง ให้ไปทำงานใน
elif สามต่อ ถ้า 2000%400 ไม่เท่ากับ 0 (ความหมายคือหารไม่ลงตัว)
year = False แต่ในที่นี่ 2000 มันดันหารลงตัว ดังนั้นเงื่อนไขไม่เป็นจริง ให้ไปทำงานใน
else: บรรทัดสุดท้ายเลยสรุปการทำงานละก็ return ออกไปเลย
ผมเรียบเรียงลำดับความคิดแล้วเหมือนจะเข้าใจ
แต่พออ่านอีกทีดันสับสน ยิ่งอ่านหลายทีแล้ว งงๆ สับสน
เลยมาถามอีกให้แน่ใจว่าผมเข้าใจถูกรึป่าว